#pragma once

#ifndef ANIME_GAN_H
#define ANIME_GAN_H


#include <iostream>
#include <fstream>
#include <string>
#include <math.h>
#include <opencv2/imgproc.hpp>
#include <opencv2/highgui.hpp>
#include <opencv2/dnn.hpp>
//#include <cuda_provider_factory.h>
#include <onnxruntime_cxx_api.h>



using namespace cv;
using namespace std;
using namespace Ort;

class AnimeGAN_
{
public:
	AnimeGAN_();
	Mat detect(Mat& cv_image);
private:
	const int inpWidth = 512;
	const int inpHeight = 512;
	vector<float> input_image_;

	Env env = Env(ORT_LOGGING_LEVEL_ERROR, "AnimeGAN_v2");
	Ort::Session* ort_session = nullptr;
	SessionOptions sessionOptions = SessionOptions();
	vector<char*> input_names;
	vector<char*> output_names;
	vector<vector<int64_t>> input_node_dims; // >=1 outputs
	vector<vector<int64_t>> output_node_dims; // >=1 outputs

};

#endif